package org.deng.vertx.springboot.pojo;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;


/**
 * 分页返回对象
 *
 * @param <T>
 * @Author 邓力宾
 */
@Data
public class PageVo<T> implements Serializable {

    private List<T> records;


    private Long pages;

    private long total = 0L;

    private long size = 0L;

    private long current;

    public PageVo() {

    }



    public static<D> PageVo<D> fromPage(IPage<D> pageInfo){
        PageVo<D> pageVo = new PageVo<>();
        pageVo.setTotal(pageInfo.getTotal());
        pageVo.setRecords(pageInfo.getRecords());
        pageVo.setCurrent(pageInfo.getCurrent());
        pageVo.setSize(pageInfo.getSize());
        pageVo.setPages(pageInfo.getTotal() / pageInfo.getSize());
        if(pageVo.getTotal() % pageVo.getSize() != 0){
            pageVo.setPages(pageVo.getPages() + 1);
        }
        return pageVo;
    }

    public static<D> PageVo<D> fromAll(int page, int size, List<D> all){
        PageVo<D> pageVo = new PageVo<>();
        pageVo.setTotal(all.size());
        List<D> records = new ArrayList<>();
        page = page - 1;
        for(int i = page * size; i < all.size() && i < page * size + size; i++){
            records.add(all.get(i));
        }
        pageVo.setRecords(records);
        pageVo.setCurrent(size);
        pageVo.setSize(size);
        pageVo.setPages(pageVo.getTotal() / size);
        if(pageVo.getTotal() % pageVo.getSize() != 0){
            pageVo.setPages(pageVo.getPages() + 1);
        }
        return pageVo;
    }

}
